#ifndef COMMON_SOURCE_CPP_IF_UTILITS_C_H
#define COMMON_SOURCE_CPP_IF_UTILITS_C_H
#include <stddef.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif
/************************************************************************/
/* 网卡工具                                                             */
/************************************************************************/
//************************************
// 返回设备网卡IP地址字符串(.分割十进制)
// @param    const char * ifname    指定网卡名称,为空则返回第一个找到网卡设备的数据
// @param    char*         ipbuf    [out] ip地址输出缓冲区
// @param    size_t      ipbufsz    输出缓冲区长度
// @param    bool       debugLog    是否输出调试信息
// @return   bool                   调用成返回true
//************************************
bool ifu_get_ip_address(const char* ifname, char *ipbuf,size_t ipbufsz, bool debugLog);
//************************************
// 返回设备网卡MAC地址字符串(12字节HEX格式)
// @param    const char *   ifname   指定网卡名称,为空则返回第一个找到网卡设备的数据
// @param    char       *   macbuf   [out] 网卡MAC地址输出缓冲区
// @param    size_t       macbufsz   输出缓冲区长度
// @param    bool         debugLog   是否输出调试信息
// @return   bool 调用成返回true
//************************************
bool ifu_get_mac_address(const char* ifname, char *macbuf, size_t macbufsz, bool debugLog);
//************************************
// 根据MAC地址(HEX字符串)查找对应的网卡
// @param    const char  * input_mac MAC地址(HEX字符串)
// @param    char        * ifname    [out] 如果找到的匹配MAC地址网卡设备,则返回网卡设备名称,such as 'wlan0','eth0',没找到则返回空字符串
// @param    size_t        ifsz      输出缓冲区长度
// @param          char * foundnics  [out] 以 '$ifname0/$mac0,$ifname1/$mac1'格式返回找到的所有网卡设备,没有则返回空字符串、
// @param    size_t        nicbufsz  输出缓冲区长度
// @param    bool          debugLog  是否输出调试信息
// @return   bool                    找到匹配MAC地址的网卡返回true,否则返回false
//************************************
bool ifu_find_nic_by_mac(const char* input_mac, char * ifname,size_t ifsz, char  * foundnics,size_t nicbufsz, bool debugLog);
//************************************
// 检查输入的mac是否与本机的设备MAC地址匹配,以参见 find_nic_by_mac
// @param    const char *       mac  HEX格式的MAC地址,such as '0A-00-27-00-00-16' or 'D0:17:C2:D0:3F:AA' or '0a0027000018'
// @param    bool         debugFlag  是否输出调试信息
// @param    char       *    errmsg  [out] 输出错误信息
// @param    size_t        errbufsz  错误输出缓冲区长度
// @return   bool                    如果本机找到匹配指定MAC地址的网卡设备返回true
//************************************
bool ifu_check_mac_matched(const char*mac, bool debugFlag, char *errmsg, size_t errbufsz);
#ifdef __cplusplus
}
#endif
#endif /** COMMON_SOURCE_CPP_IF_UTILITS_C_H */
